In the context of this functioning management, it is often useful to log the functioning of the primary application or one of its processes, i.e. to record data representing this functioning, an enabling the execution to be reconstituted. Along with the execution of the primary application, this data is then generated in the form of logging data and is transmitted to one or more secondary nodes for storage and backup.
For example in order to trace and study the functioning of the primary application in detail, it is then possible to study or to reconstitute this functioning, later on or remotely, in a controlled and monitored manner.
Also as an example, if the primary application experiences a failure, in particular a hardware failure, it is then possible to create a new standby application on a secondary node in order to replace the services provided by the primary application. This standby application may then be created in a known state, for example a restart point state recorded previously. From the logging data of the primary application, it is then possible to force the standby application to reconstitute the execution of the primary application up to the time of the failure. After this reconstitution, or replay, the standby application is in the same state as the application until the last event, the logging data of which have been received outside the primary node. If all the events preceding the failure have been logged and transmitted up to the failure, the standby application can then take over with little or no interruption of the service for the users.
However currently, many existing applications do not have such management functionalities, and it would be too complex and costly to modify them in order to add these to them.
The solution which consists of implementing these functionalities in the system software of the computer or of the primary node presents some considerable drawbacks, such as the risk of errors, instability or incompatibility within the network and the requirement for special skills in the field of systems software.
A solution has been proposed by the authors of this invention, which consists of these management functionalities being taken over by an intermediate application which is mainly executed in the user memory space and requires only a few modifications within the system software itself.
However, in this type of solution, inter alia, the transmission of the logging data from the primary node to a secondary node represents a significant calculation load with respect to the execution of the primary application itself, as well as for the communication networks used. In the prior art, the master application then experiences such a loss of performance that, often, this functioning management cannot be satisfactorily used in exploitation conditions.
In fact, in order to be able to represent in a coherent manner, or even a complete manner, the execution of the primary application, the events to be recorded and to be transmitted are often very numerous. Moreover, the majority of these events correspond to operations the execution of which is very fast, in particular the events which are internal to the hardware or software resources of the primary node, for example a system call requesting the assignment of a semaphore or reading an item of data in memory.
By contrast, for each of these events, the transmission of the logging data from the user memory space constitutes a much longer operation, in particular for the internal events.
In fact, this data is therefor forwarded to the system software, which manages them and processes them according to a certain number of network protocols, for example a TCP protocol followed by an IP protocol, in order to then transmit them via communication means, for example a network card. However it so happens that these network protocols represent a significant calculation load with respect to the duration of an event. Moreover, in particular in an existing network, the performance of the means for communicating from one computer to the other are generally poor in relation to the number of events, because most often than not they are only designed for intermittent data transfers. As a result, the transmission of the logging data of each event on the one hand, and the corresponding event on the other hand, have execution times which can sometimes differ by a factor ranging from 100 to more than 10,000.
An aim of the invention is to overcome all or some of these drawbacks.
The invention aims in particular to obtain:                faster or more reliable transmission of the logging data between the primary node and the secondary node(s);        simpler, more reliable and faster forwarding of the logging data to the communication means within the primary node;        greater independence of this transmission from the system software.        
At a given instant, the primary application is executed on a computer or a group of computers of the cluster, called primary or operational (OP) node, while the other computers of the cluster are called secondary or “stand-by” (SB) nodes.
Therefore, the invention proposes a method of transmission from a primary node to a secondary node within a computer network, for logging data which represent the execution of a logged process executed in a first user memory space within this primary node and which are stored in this first user memory space while this logged process runs. This first user memory space is of the type the functioning of which is managed by system software comprising first communication software resources and interacting with first communication hardware means of the primary node to enable a transfer of data between this first user memory space and at least one other node of said network. Accordingly this transmission method comprises transmitting this logging data from said first user memory space to second communication software resources interacting with second communication means in order to transmit them to the secondary node at a rhythm which is globally equivalent to the execution rhythm of the logged process.
When, for example, the primary node is a computer running under Unix in a TCP/IP network over Ethernet, the system software comprises kernel modules constituting these “first software resources”. This concerns in particular the modules managing the TCP and IP layers. These software layers interact with the first means of communication, for example a 10/100 Mps ethernet card within this same computer and connected to the network. According to the invention, this computer also receives second means of communication, for example another network card which is faster or acts as a reinforcement of the first one.
According to one particularity, the second communication software resources operate to a large extent independently of the system software and transmit the logging data according to a process comprising significantly fewer operations than the first communication software resources, thus constituting a short cut compared to data transfers as they are when managed integrally by the system software.
More particularly, the logging data is generated by a logging agent which transmits them directly to the second communication software resources according to a process which is to a large extent independent of the system software.
The logging data can also be forwarded directly from the second communication software resources to the second communication means, according to a process which is to a large extent independent of the system software.
In this way this forwarding from the logging agent may for example use specific instructions directly accessing a kernel module controlling the second network card without using the Unix system call, or directly control the second network card, for example by a hardware interruption or by writing directly into the card memory.
According to the invention, these features may also be applied at the level of one or more secondary nodes.
Therefore, within the secondary node the logging data can be received and stored in a second user memory space managed by a system software.
Similarly, the system software of the secondary node may being interacting with first means of communication, while the logging data are received in the secondary node by second communication means constituting a short cut similar to the one for the primary node.
Preferentially, the logging data transmitted by the second means of communication represent only one part of the events included in the running of the logged process, this part comprising the more numerous or shortest of these events. Preferential selection of this type of events allows the performance losses caused by the logging to be more significantly reduced.
In particular, among the events included in the running of the logged process, the logging data transmitted by the second means of communication represent at least the events internal to the primary node hardware and software resources.
This process can be used in particular with first communication software resources comprising the TCP/IP standard message processing software components.
The second means of communication in particular can be means functioning in a way compatible with the PCI-X standard.
In particular while running the master application, the logging operations represent a work load for the operational node, and can be the cause of a fall-off in performance due to the action of the intermediate application.